#ifndef __WIZ_BNF_ARGUMENTS_HPP__SHANHAOBO_19800429__
#define __WIZ_BNF_ARGUMENTS_HPP__SHANHAOBO_19800429__

#include "./Actor/WizBNFActor.hpp"

namespace Wiz
{
    namespace BNF
    {
        namespace Arguments
        {
            template <::Wiz::Int::Type N>
            struct Type
            {
                template <typename TupleT>
                struct Result
                {
                    typedef typename ::Wiz::Tuple::Element::Type<N, TupleT>::tType tType;
                };

                template <typename TupleT>
                typename ::Wiz::Tuple::Element::Type<N, TupleT>::tType
                Evaluate(TupleT const& Args) const
                {
                    return Args[::Wiz::Tuple::Index::Type<N>()];
                }
            };
        } /// end of namespace Arguments

        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<0>> const Arg0 = ::Wiz::BNF::Arguments::Type<0>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<1>> const Arg1 = ::Wiz::BNF::Arguments::Type<1>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<2>> const Arg2 = ::Wiz::BNF::Arguments::Type<2>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<3>> const Arg3 = ::Wiz::BNF::Arguments::Type<3>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<4>> const Arg4 = ::Wiz::BNF::Arguments::Type<4>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<5>> const Arg5 = ::Wiz::BNF::Arguments::Type<5>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<6>> const Arg6 = ::Wiz::BNF::Arguments::Type<6>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<7>> const Arg7 = ::Wiz::BNF::Arguments::Type<7>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<8>> const Arg8 = ::Wiz::BNF::Arguments::Type<8>();
        ::Wiz::BNF::Actor::Type<::Wiz::BNF::Arguments::Type<9>> const Arg9 = ::Wiz::BNF::Arguments::Type<9>();
    } /// end of namespace 
} /// end of namespace Wiz

#endif /*__WIZ_BNF_ARGUMENTS_HPP__SHANHAOBO_19800429__*/
